<?php
require_once(__DIR__."/Mysql.class.php");
require_once(__DIR__."/Redis.class.php");
require_once(__DIR__."/Output_Log.class.php");


$rel = true;        //无限循环的变量
$num = 0;            //用来没数据时的判断依据
date_default_timezone_set("Asia/Shanghai"); 
$now = date("Y-m-d H:i:s");        //当前时间
//file log
$txt = dirname(__DIR__)."/Script_Log/clickgood_log.txt";
$output = new OutputLog();
$test = $output->open($txt,"a+");
$text = '';
while($rel)
{
    $redis = new RedisCtrl();

    //开始干活
    if($num==0){
        //这里就是将信息输出到文件里记录，下面很多地方都是一样的。
        $text = "start ".$name."\n";
        echo $text;
        $output->write($test,$text);
    }

    //获取备份队列的长度
    $copylistlength = $redis->llen("comment:uploadcopylist"); 

    //我这里展示的是第一数据回滚到mysql，小伙伴想批量回滚的，自己改装下就可以用了。
    //自己动手丰衣足食！
    if($copylistlength>1)
    {
        //由于是单一数据回滚，所以我要判断它是否超过我设定的值，小伙伴们最好也自己定一个阈值。
        //report error
        echo $now." ->false\n";
        $rel = false;
        return;
    }
    else if($copylistlength==1)
    {
        //这里判断防止上次redis出现错误，导致数据没有及时回到mysql
        $data = $redis->rpop("comment:uploadcopylist");
        $rel = $redis->UpdateClickGoodDataToMysql($data);
        $text = $rel."\n";
        echo $text;
        $output->write($test,$text);
    }
    else
    {
        //获取主要队列的长度
        $listlength = $redis->llen("comment:uploadlist");
        if ($listlength>0) {
            //使用之前说到的设计模式
            $data = $redis->rpoplpush("comment:uploadlist","comment:uploadcopylist");

            $rel = $redis->UpdateClickGoodDataToMysql($data);
            $text = $rel."\n";
            echo $text;
            $output->write($test,$text);
        }else{
            // 队列为空
            // 打印关闭信息，这里的写法算是维持进程窗口不关闭，需要手动关闭
            // 如果想让它执行完自动关闭的，
            // 把下面改写成$rel = false;
            if($num<=3){
                $text = $now." -> please close .\n";
                echo $text;
                $output->write($test,$text);
                $num++;
            }
            else
            {
                $output->close($test);
            }
        }
    }

}